草庐IT

PhpUnit 模拟 : function undefined

全部标签

PhpUnit:测试方法调用时的自定义错误消息

目前我正在为一个框架编写测试,我们通常在测试失败时使用自定义错误消息,添加一些有用的调试信息:$this->assertEquals($check,$result,'Class::methodreturnedthewrongresultwithargumentXXX');但是我希望在检查函数调用时自定义错误消息:$mock->expects($this->any())->method('foobar')->with($this->equals('dummy'));当上述断言不成立时,我得到标准消息。我在PhpUnit文档中进行了搜索,但找不到自定义错误消息的方法,我是否遗漏了任何内容?

用于测试 catch block 的 PHPunit

我有这样一个代码:publicfunctionone(){try{$this->two();}catch(Exception$E){$this->three();}}我如何测试调用了$this->three()函数?我尝试“按代码模拟”$this->two()并抛出错误而不是它的原始代码,但最终错误被phpunit本身捕获。尝试了setExpectedException,但它也没有解决问题-catch再次在phpunit中运行,只是被忽略了。函数$this->three()在这两种情况下都没有被调用。谢谢! 最佳答案 问题是所描述的

php - 使用 Jetbrains PHPStorm 覆盖 PHPUnit 0%

我正在使用Codeigniter3框架和一个phpunit包ci-phpunit-test.我在启用了zend调试器的zend服务器上运行php。我的phpunit.xml文件在那里:././_ci_phpunit_test/../controllers../models我使用带有绿色线条和破折号的图标来运行代码覆盖执行,这会运行以下命令:"C:\ProgramFiles(x86)\Zend\ZendServer\bin\php.exe"-dzend_debugger.enable_coverage=1C:/Users/NICOLAS/AppData/Local/Temp/ide-ph

php - 如何在使用 PHPUnit、Selenium 和 php-webdriver 进行测试后保持登录状态

我正在尝试使用它们之间的共享session运行多个测试,从登录开始。'chrome','sessionStrategy'=>'shared');publicfunctionsetUp(){$this->webDriver=RemoteWebDriver::create($this->host,$this->browser);}publicfunctiontearDown(){$this->webDriver->quit();}我的第一个测试是登录,效果很好:publicfunctiontestLogin(){$this->webDriver->get('http://localhost

php - 使用 PHPUnit 测试 Slim 3 路由时 $response->getBody() 为空

我使用以下方法在我的PHPUnit测试中分派(dispatch)Slim应用程序的路由:protectedfunctiondispatch($path,$method='GET',$data=array()){//Prepareamockenvironment$env=Environment::mock(array('REQUEST_URI'=>$path,'REQUEST_METHOD'=>$method,));//Preparerequestandresponseobjects$uri=Uri::createFromEnvironment($env);$headers=Header

php - Laravel 5.2 - 为 foreach() 提供的参数无效 - 使用 phpunit

我在使用phpunit命令测试我的应用程序时遇到上述错误。publicfunctiontestProductCreationFailsWhenNameNotProvided(){$product=factory(\App\Product::class)->make(['name'=>'']);$this->post(route('api.products.store'),$product->jsonSerialize())->seeJson(['name'=>['Thenamefieldisrequired.']])/*line86*/->assertResponseStatus(42

PHPUnit:在一次测试中对模拟方法使用多个断言是一种不好的做法吗?

我正在测试一个旨在测试用户是否拥有给定电子邮件的对象。因此,在调用“tryEmail”方法时,它会向给定的电子邮件地址发送一strip有确认链接的消息。我的测试看起来像这样:publicfunctiontestSendingWasSuccessful(){$confirmationObject=$this->getMock('LT\EmailConfirmation\Model\ConfirmationObjectInterface');$testType='test.type';$testEmail='test@example.com';$testData=[];//EmailTes

selenium+opencv实现模拟登陆(滑块验证码)

很多网站登录登陆时都要用到滑块验证码,在某些场景例如使用爬虫爬取信息时常常受到阻碍,想着用opencv的模板匹配试试能不能实现模拟登陆。本来觉得网上资料多应该还蛮容易,但实际上手还是搞了蛮久,在这里记录一下整个流程,网站无所谓主要是要有滑动验证码:环境python3.9,selenium和Opencv相关依赖,用于抓取图片的requests包,具体安装这里不多讲了,其中selenium用的火狐版本。selenium登录网站整体流程就是这个样子:访问网站->点击登录->输入账号密码->搞定滑块验证->登录网站,其中最大的难点是滑块验证码,但在此之前我们当然要先让selenium自动打开网站把账号

php - 如何将一组测试用例发送到 PHPUnit willReturnOnConsecutiveCalls

我正在尝试将预先计算的测试用例数组发送到模拟中,以便在连续调用时返回-类似于map函数。但是它需要一个参数列表,而不是一个数组。我的数组已经由夹具生成器生成,并且可能具有可变长度。我想做的是这样的事情,但这当然会导致它在第一次调用时返回整个数组。//Inatestcase:$processorMock->method('process')->willReturnOnConsecutiveCalls($fixtureLoader->getProcessorScenarios()//howtoexplodethis?);//classFixtureLoaderpseudocode:func

php - 在忽略@covers 的同时生成 PHPUnit 代码覆盖率

我正在使用PHPUnit生成代码覆盖率报告vendor/bin/phpunit--coverage-clovercoverage.clover我有一些代码库在他们的测试中使用了@covers标签,表明他们测试的服务。在这些代码库中,没有针对值对象等事物的专门测试。这导致覆盖率报告表明很多代码没有经过测试,而实际上是这样。这使得很难通过查看覆盖率报告找到实际未经测试的代码。解决此问题的一种方法是删除@covers标记,尽管这些标记对于指示意图很有用,并且在IDE识别它们时它们有助于导航。因此我希望PHPUnit忽略这些标签。我发现有一个--disable-coverage-ignore标